import re

def sort_dict_entries(file_path, output_path):
    # 读取文件内容
    with open(file_path, 'r', encoding='utf-8') as file:
        lines = file.readlines()

    # 分离文件头部和词条部分
    header = []
    entries = []
    is_header = True

    for line in lines:
        if line.strip() == '...':
            is_header = False
            header.append(line)
            continue

        if is_header:
            header.append(line)
        else:
            if line.strip():  # 忽略空行
                entries.append(line)

    # 对词条按拼音首字母排序
    def get_pinyin_key(entry):
        # 提取拼音部分（第一个分号前的部分）
        pinyin = entry.split('\t')[1].split(';')[0]
        return pinyin.lower()  # 转换为小写以确保排序正确

    entries_sorted = sorted(entries, key=get_pinyin_key)

    # 写入排序后的内容到新文件
    with open(output_path, 'w', encoding='utf-8') as file:
        file.writelines(header)
        file.writelines(entries_sorted)

# 使用示例
input_file = 'rime_utils/src/jk_pinyin.dict.yaml'  # 输入文件路径
output_file = 'rime_utils/out/jk_pinyin_sorted.dict.yaml'  # 输出文件路径
sort_dict_entries(input_file, output_file)
print(f"排序完成，结果已保存到 {output_file}")